home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / dlasr.z / dlasr
Text File  |  1996-03-14  |  4KB  |  133 lines

  1.  
  2.  
  3.  
  4. DDDDLLLLAAAASSSSRRRR((((3333FFFF))))                                                            DDDDLLLLAAAASSSSRRRR((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      DLASR - perform the transformation   A := P*A, when SIDE = 'L' or 'l' (
  10.      Left-hand side )   A := A*P', when SIDE = 'R' or 'r' ( Right-hand side )
  11.      where A is an m by n real matrix and P is an orthogonal matrix,
  12.  
  13. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  14.      SUBROUTINE DLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA )
  15.  
  16.          CHARACTER     DIRECT, PIVOT, SIDE
  17.  
  18.          INTEGER       LDA, M, N
  19.  
  20.          DOUBLE        PRECISION A( LDA, * ), C( * ), S( * )
  21.  
  22. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  23.      DLASR   performs the transformation consisting of a sequence of plane
  24.      rotations determined by the parameters PIVOT and DIRECT as follows ( z =
  25.      m when SIDE = 'L' or 'l' and z = n when SIDE = 'R' or 'r' ):
  26.  
  27.      When  DIRECT = 'F' or 'f'  ( Forward sequence ) then
  28.  
  29.         P = P( z - 1 )*...*P( 2 )*P( 1 ),
  30.  
  31.      and when DIRECT = 'B' or 'b'  ( Backward sequence ) then
  32.  
  33.         P = P( 1 )*P( 2 )*...*P( z - 1 ),
  34.  
  35.      where  P( k ) is a plane rotation matrix for the following planes:
  36.  
  37.         when  PIVOT = 'V' or 'v'  ( Variable pivot ),
  38.            the plane ( k, k + 1 )
  39.  
  40.         when  PIVOT = 'T' or 't'  ( Top pivot ),
  41.            the plane ( 1, k + 1 )
  42.  
  43.         when  PIVOT = 'B' or 'b'  ( Bottom pivot ),
  44.            the plane ( k, z )
  45.  
  46.      c( k ) and s( k )  must contain the  cosine and sine that define the
  47.      matrix  P( k ).  The two by two plane rotation part of the matrix P( k ),
  48.      R( k ), is assumed to be of the form
  49.  
  50.         R( k ) = (  c( k )  s( k ) ).
  51.                  ( -s( k )  c( k ) )
  52.  
  53.      This version vectorises across rows of the array A when SIDE = 'L'.
  54.  
  55.  
  56. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  57.      SIDE    (input) CHARACTER*1
  58.              Specifies whether the plane rotation matrix P is applied to A on
  59.              the left or the right.  = 'L':  Left, compute A := P*A
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. DDDDLLLLAAAASSSSRRRR((((3333FFFF))))                                                            DDDDLLLLAAAASSSSRRRR((((3333FFFF))))
  71.  
  72.  
  73.  
  74.              = 'R':  Right, compute A:= A*P'
  75.  
  76.      DIRECT  (input) CHARACTER*1
  77.              Specifies whether P is a forward or backward sequence of plane
  78.              rotations.  = 'F':  Forward, P = P( z - 1 )*...*P( 2 )*P( 1 )
  79.              = 'B':  Backward, P = P( 1 )*P( 2 )*...*P( z - 1 )
  80.  
  81.      PIVOT   (input) CHARACTER*1
  82.              Specifies the plane for which P(k) is a plane rotation matrix.  =
  83.              'V':  Variable pivot, the plane (k,k+1)
  84.              = 'T':  Top pivot, the plane (1,k+1)
  85.              = 'B':  Bottom pivot, the plane (k,z)
  86.  
  87.      M       (input) INTEGER
  88.              The number of rows of the matrix A.  If m <= 1, an immediate
  89.              return is effected.
  90.  
  91.      N       (input) INTEGER
  92.              The number of columns of the matrix A.  If n <= 1, an immediate
  93.              return is effected.
  94.  
  95.              C, S    (input) DOUBLE PRECISION arrays, dimension (M-1) if SIDE
  96.              = 'L' (N-1) if SIDE = 'R' c(k) and s(k) contain the cosine and
  97.              sine that define the matrix P(k).  The two by two plane rotation
  98.              part of the matrix P(k), R(k), is assumed to be of the form R( k
  99.              ) = (  c( k )  s( k ) ).  ( -s( k )  c( k ) )
  100.  
  101.      A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
  102.              The m by n matrix A.  On exit, A is overwritten by P*A if SIDE =
  103.              'R' or by A*P' if SIDE = 'L'.
  104.  
  105.      LDA     (input) INTEGER
  106.              The leading dimension of the array A.  LDA >= max(1,M).
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.